[실기] (PART 1) 요구사항

NOTE

정보처리기사 실기 PART 1 — 소프트웨어 생명주기, 개발 방법론, 아키텍처/디자인 패턴, 요구공학 등 요구사항 관련 핵심 개념 정리.

소프트웨어 생명주기 모델 순서

  • 요구사항분석 → 설계 → 구현 → 테스트 → 유지보수

소프트웨어 생명주기 모델 종류

  • 폭포수모델 ( 오래됨 )
  • 프로토타이핑 모델 (프로토타입 구현)
  • 나선형 모델 ( 위험 최소 )
  • 반복적 모델 ( 구축 대상 나누어 병렬적 개발 후 통합 )

소프트웨어 개발 방법론 종류

  • 구조적 방법론 (분할과 정복, 나씨-슈나이더만)
  • 정보공학방법론 (정보시스템 개발, 대형프로젝트 수행)
  • 객체지향 방법론 (객체 기본 단위 )
  • 컴포넌트기반 방법론 ( 컴포넌트 조립 )
  • 애자일 방법론 ( 사람 중심 )
    • xp ( 짝프로그래밍, 테스트기반개발, 리팩토링, 메타포어(고객-개발자 소통))
    • 스크럼 ( 백로그(요구사항) → 스프린트 → 스크럼 (미팅-마스터-회고) → 번다운차트(남은 백로그 그래픽적 표현)
    • 린 (도요타-7가지원칙)
  • 제품 계열 방법론 ( 특정 제품 적용 , 영역 공학 / 응용 공학 )

객체지향분석방법론

  • 객체지향구성요소
    • 클래스(추상화), 객체(식별가능 대상), 메서드(객체 사용 방법), 메시지(객체간 상호작용), 인스턴스(실형 객체), 속성(데이터 단위별 정리)
  • 객체 지향 기법
    • 캡슐화(경계)
    • 상속성 (물려받음)
    • 다형성 (오버로딩/오버라이딩)
    • 추상화 (추상클래스)
    • 정보은닉 (공개 인터페이스를 통해서만 접근 가능)
    • 관계성
      • 연관화 : is-member-of (비계층적 관계성)
      • 집단화 : is part of (관련있는 여러개 묶음)
      • 특수화 : is a (하위 클래스에서 나름대로 수정)
      • 분류화 : is instance of (공통 속성)
      • 일반화 : is a (상위클래스 상속받음)
  • 객체지향설계원칙 (SOLID)
    • SRP(단일 책임), OCP(개방 폐쇄 원칙), LSP(리스코프 치환 원칙), ISP(인터페이스 분리), DIP(의존성 역전)
  • 객체지향 분석 방법론 종류
    • OOSE (야콥슨)
    • OMT (럼바우 - 객 동 기)
      • 객 - er다이어그램
      • 동 - 상태다이어그램
      • 기 - 자료흐름도
    • OOD (부치)

프로젝트 관리 3대 요소

  • 사람, 문제, 프로세스

비용산정 모형

  • 하향식산정방법
    • 전문가 판단, 델파이기법
  • 상향식 산정방법
    • COCOMO, LOC, 푸트남 모형, FP(기능점수) 모형
      • COCOMO → organic (5만), semi detached(30만), embeded(30만)

일정관리 모델 종류

  • 주공정법(CPM)
  • PERT (비관치, 중간치, 낙관치 추정방식 이용)
  • 중요연쇄프로젝트관리 (CCPM)

소프트웨어 아키텍처 4+1뷰

  • 논리뷰 (요구사항이 어떻게 제공되는지 설명)
  • 유스케이스뷰 (사용자, 설계자)
  • 프로세스뷰 (비기능적인 속성 → 자원 효율적사용, 병행실행, 비동기 표현한 뷰)
  • 구현뷰 (정적인 소프트웨어 모듈 구성)
  • 배포뷰(아키텍처에 어떻게 배포되는가 매핑해서 보여줌)

소프트웨어 아키텍처 패턴유형

  • 계층화 패턴
  • 서버-클라이언트 패턴
  • 파이프 패턴 (컴포넌트 재사용성 좋음)
  • 브로커 패턴 (컴포넌트 원격서비스 실행을 통해 상호작용 가능, 컴포넌트간의 통신)
  • 모델 - 뷰 - 컨트롤러 패턴 (MVC)

소프트웨어 아키텍처 비용 평가모델 종류

  • SAAM : 경험이 없는 조직에서 사용
  • ATAM : 이해상충관계까지 고려
  • CBAM : ATAM 기반
  • ADR : 응집도 평가
  • ARID : 전체가 아닌 특정부분 집중

디자인패턴

  • 생성패턴
    • 빌더 : 객체 생성, 표현 방법 분리
    • 프로토타입 : 원형 복사 후 필요한 부분만 수정
    • 팩토리 메서드 : 상위클래스에서 인터페이스 정의, 하위클래스에서 인스턴스 생성
    • 추상화 팩토리 : 구체적인 클래스에 의존 x, 연관되거나 의존적인 객체들의 조합
    • 싱글톤 : 전역변수 사용x, 생성된 객체를 어디서든지 참조 가능
  • 구조패턴
    • adapter : 클래스 재사용
    • 브릿지 : 추상층을 분리
    • composite : 객체들의 관계 = 트리구조
    • decorator : 기존 구현 클래스에 기능 추가
    • facade : 오류에 대해 단위별 확인 가능
    • flyweight : 클래스 경량화 목적
    • proxy : 실체 객체에 대한 대리 객체
  • 행위패턴
    • meditator : 중재자
    • interpreter : 해석
    • iterator : 복잡 개체 원소를 순차적 접근
    • Template Method : 코드양을 줄이고 유지보수 용이
    • observer : 객체가 바뀌면 의존하는 다른 객체들에게 연락이 감 (1:N 의존)
    • state : 상태에 따라 변경
    • Visitor : 처리기능 분류하여 별도의 클래스를 만들어서 사용
    • command : 실행될 기능을 캡슐화
    • startegy : 같은 알고리즘을 하나의 클래스로 캡슐화
    • memento : Undo 기능

OSI 7계층

  • 응용계층 : 응용서비스 연결
  • 표현계층 : 데이터 압축, 암/복호화
    • Chain of Responsibility : 한개의 요청을 2개이상의 객체에서 처리
  • 세션계층 : 동기제어, 연결접속
  • 전송계층 : 신뢰성 통신
  • 네트워크계층 : 데이터 전송 경로 제공
  • 데이터링크 계층 : 전송오류 제어
  • 물리계층 : 0,1 비트정보 회선 보냄

요구공학 프로세스

  • 도출 → 분석 → 명세 → 확인 및 검증 (도분명확)

요구사항 명세 단계

  • 비정형 명세 기법 : 자연어 기반
  • 정형 명세 기법 : 수학적 원리

요구사항 도출 단계

  • 인터뷰, 브레인스토밍, 롤플레잉 (역할), 워크숍(단기간 집중적인 노력), 설문조사, 델파이 기법

요구사항 확인 및 검증 주요기법

  • 요구사항검토
  • 정형기술검토활용
    • 동료검토
    • 워크스루 ( 회의 전 배포)
    • 인스펙션 (다른 팀이 검사)
  • 프로토타이핑 활용
  • 모델검증
  • 테스트 케이스
  • CASE 도구 활용 (자동화된 일관성 분석)
  • 베이스라인
  • 요구사항추적표(RTM) : 개발단계별 최종 산출물 변경 여부 확인